public class P11_17 {
    public int removeDuplicates1(int[] nums) {
        int size = nums.length;
        for(int i = 0;i<size-1;i++){
            while(i<size-1&&nums[i]==nums[i+1]){
                remove(nums,size,i);
                size--;
            }
        }
        return size;
    }
    public void remove(int[] arr,int size,int index){
        for(int i = index;i<size-1;i++){
            arr[i]=arr[i+1];
        }
    }
    public int removeElement1(int[] nums, int val) {
        int size = nums.length;
        for(int i = 0 ; i<nums.length ;i++){
            while(i<size&&nums[i]==val){
                remove(nums,size,i);
                size--;
            }
        }
        return size;
    }

    public static void main(String[] args) {
        int[] nums = {0,0,1,2,2,2,3,4};
//        removeDuplicates(nums);
//        int length = removeAllSame(nums);
//        toString(nums,length);
    }
    //删掉数组中所有等于val的元素并返回新数组长度
    public int removeElement(int[] nums, int val) {
        int fir = 0;//[0,fir-1]区间是所需区间
        for(int sec = 0;sec<nums.length;sec++){//sec扫描数组
            if(nums[sec]!=val){
                nums[fir]=nums[sec];//只要sec所指元素不等于val,就将val写入[0,fir-1]区间中
                fir++;
            }
        }
        return fir;
    }

    //删除有序数组中所有相同的元素

    public static void toString(int[] arr,int length){
        for (int i = 0; i < length; i++) {
            System.out.print(arr[i]+" ");
        }
    }

    public static int removeDuplicates(int[] nums) {
        int fir = 0;//fir指向最后一个不重复的元素
        for(int sec = 0;sec<nums.length;sec++){
            if(nums[fir]!=nums[sec]){//有新的不重复的元素了
                fir++;
                nums[fir]=nums[sec];//放新元素
            }
        }
        return fir+1;
    }

}
